package com.avanti.routes;

import java.io.Serializable;

public class Arista implements Serializable{


		private static final long serialVersionUID = 5140302146035157445L;
		private int origen;
        private int destino;
        private int direccion;
        
        int weight = 1;
        
        public static final int UP = 1;
        public static final int UP_RIGHT = 2;
        public static final int RIGHT = 3;
        public static final int DOWN_RIGHT = 4; 
        public static final int DOWN = 5;
        public static final int DOWN_LEFT = 6;
        public static final int LEFT = 7;
        public static final int UP_LEFT = 8;
        
        
        public Arista(){
                origen = 0;
                destino = 0;
                direccion = 0;
        }
        
        public Arista(int o, int d, int dir){
                this.origen = o;
                this.destino = d;
                this.direccion = dir;
        }
        
        public Arista(Arista a){
                this.origen = a.origen;
                this.destino = a.destino;
                this.direccion = a.direccion;
        }
        
        public static int dirFromStringToInt(String dir)
        {
        	if("UP".equals(dir))
        	{
        		return  Arista.UP;
        	}else if("UP_RIGHT".equals(dir))
        	{
        		return  Arista.UP_RIGHT;
        	}else if("RIGHT".equals(dir))
        	{
        		return  Arista.RIGHT;
        	}else if("DOWN_RIGHT".equals(dir))
        	{
        		return  Arista.DOWN_RIGHT;
        	}else if("DOWN".equals(dir))
        	{
        		return  Arista.DOWN;
        	}else if("DOWN_LEFT".equals(dir))
        	{
        		return  Arista.DOWN_LEFT;
        	}else if("LEFT".equals(dir))
        	{
        		return  Arista.LEFT;
        	}else if("UP_LEFT".equals(dir))
        	{
        		return  Arista.UP_LEFT;
        	}
        	
        	return 0;
        }
        public static int opuesto(int direccion){
                int dirOpuesta = 0;
                switch(direccion){
                case Arista.UP:
                        dirOpuesta= Arista.DOWN;
                        break;
                case Arista.UP_RIGHT:
                        dirOpuesta = Arista.DOWN_LEFT;
                        break;
                case Arista.RIGHT:
                        dirOpuesta = Arista.LEFT;
                        break;
                case Arista.DOWN_RIGHT:
                        dirOpuesta = Arista.UP_LEFT;
                        break;
                case Arista.DOWN:
                        dirOpuesta = Arista.UP;
                        break;
                case Arista.DOWN_LEFT:
                        dirOpuesta = Arista.UP_RIGHT;
                        break;
                case Arista.LEFT:
                        dirOpuesta = Arista.RIGHT;
                        break;
                case Arista.UP_LEFT:
                        dirOpuesta = Arista.DOWN_RIGHT;
                        break;
                }
                return dirOpuesta;
        }
        
        public int getOrigen(){
                return origen;
        }
        
        public void setOrigen(int o){
                origen = o;
        }
        
        public int getDestino(){
                return destino;
        }
        
        public void setDestino(int d){
                destino = d;
        }
        
        public int getDireccion(){
                return direccion;
        }
        
        public void setDireccion(int dir){
                direccion= dir;
        }
}
